package br.gov.capgov.treinamento.web.managedbeans;	

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.gov.capgov.treinamento.ejb.sessionbeans.ControleDeQuedasEJB;
import br.gov.capgov.treinamento.ejb.sessionbeans.SistemaEJB;
import br.gov.capgov.treinamento.ejb.sessionbeans.UrlEJB;
import br.gov.capgov.treinamento.jpa.entidades.ControleDeQuedas;
import br.gov.capgov.treinamento.jpa.entidades.Sistema;
import br.gov.capgov.treinamento.jpa.entidades.Url;
	
@ManagedBean
@ViewScoped
public class ControlaSistemaMB
{
	@ManagedProperty(value = "#{sistemaMB}")
	private SistemaMB sistemaMB;
	private List<Sistema> sistemas = new ArrayList<Sistema>();
		
	@EJB 
	private SistemaEJB sistemaEJB;
	@EJB
	private UrlEJB urlEJB;
	@EJB
	private ControleDeQuedasEJB controleDeQuedasEJB;
		
	private ControleDeQuedas controleDeQuedas = new ControleDeQuedas();
		
	// ----------------------------------------------------------------- CONSTRUTOR -----------------------------------------//
	public ControlaSistemaMB()
	{
	}
		
	public void buscaSistemasEUrls()
	{
		sistemas = sistemaMB.mostraSistema();
			
		for(Sistema x: sistemas)
		{
			x.setUrls(urlEJB.procuraUrlsSistema(x.getId()));
				
			for (Url y: x.getUrls())
			{	
				y.setControleDeQuedas(controleDeQuedasEJB.procurarControleDeQuedasDeUmaURL(y));
				
				Date date = new Date();
				controleDeQuedas.setData(date);
				
				ControleDeQuedas controleDeQuedas2;
				controleDeQuedas2 = controleDeQuedasEJB.buscaPorData(controleDeQuedas.getData(), y);
				
				if(controleDeQuedas2==null)
				{
					y.setTotalQuedas(0);
				}
				else
				{
					y.setTotalQuedas(controleDeQuedas2.getTotalQuedas());
				}
				
				controleDeQuedas = new ControleDeQuedas();
			}
		}
	}

	public int disponibilidadeAtualSistema(Sistema sistema)
	{
		int cont = 0;
			
		if(sistema.isDisponivel()==true)
		{
			for(Url x: urlEJB.procuraUrlsSistema(sistema.getId()))
			{
				if(disponibilidadeAtualUrl(x)==2)
				{
					cont = 2;
					break;
				}
				else
				{
					cont = 1;
				}
			}
		}
		else
		{
			cont = 3;
		}
			
		return cont;
	}
		
	public int disponibilidadeAtualUrl(Url url)
	{
		int cont = 0;
			
		if(url.isDisponivel()==true)
		{
			Date date = new Date();
				
			url.setDataAtual(date);
				
			controleDeQuedas = controleDeQuedasEJB.buscaPorData(url.getDataAtual(), url);
				
			if(controleDeQuedas==null)
			{
				cont = 1;//verde
			}
			else
			{
				cont = 2;//amarela
			}
				
		}
		else
		{
			cont = 3;//vermelha
		}
			
		return cont;
	}
		
	public SistemaMB getSistemaMB()
	{
		return sistemaMB;
	}
	public void setSistemaMB(SistemaMB sistemaMB)
	{
		this.sistemaMB = sistemaMB;
	}
	public List<Sistema> getSistemas()
	{
		return sistemas;
	}
	public void setSistemas(List<Sistema> sistemas)
	{
		this.sistemas = sistemas;
	}
}